Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/js/MicronStorage.js c0b0ddffd735a0d007c1be9a5e8563ec42fdafc0 (c0b0ddff) Text, 3.49 KB

Tff7b72const Te6edf3DB_NAME Tff7b72= Ta5d6ff"micron_editor_db"Tb4b4b4;
Tff7b72const Te6edf3DB_VERSION Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72const Te6edf3STORE_NAME Tff7b72= Ta5d6ff"tabs"Tb4b4b4;

Tff7b72class Te6edf3MicronStorage Tb4b4b4{
Tff7b72constructorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3db Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3initPromise Tff7b72= Tff7b72thisTb4b4b4.Te6edf3initTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72async Te6edf3initTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4) Tb4b4b4{
Te6edf3resolveTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3idb Tff7b72=
Tffa657windowTb4b4b4.Te6edf3indexedDB Tff7b72||
Tffa657windowTb4b4b4.Te6edf3mozIndexedDB Tff7b72||
Tffa657windowTb4b4b4.Te6edf3webkitIndexedDB Tff7b72||
Tffa657windowTb4b4b4.Te6edf3msIndexedDB Tff7b72||
Tffa657globalThisTb4b4b4.Te6edf3indexedDBTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idbTb4b4b4) Tb4b4b4{
Te6edf3rejectTb4b4b4(Ta5d6ff"IndexedDB not supported"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3request Tff7b72= Te6edf3idbTb4b4b4.Te6edf3openTb4b4b4(Te6edf3DB_NAMETb4b4b4, Te6edf3DB_VERSIONTb4b4b4)Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"IndexedDB error:"Tb4b4b4, Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3errorCodeTb4b4b4)Tb4b4b4;
Te6edf3rejectTb4b4b4(Ta5d6ff"IndexedDB error: " Tff7b72+ Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3errorCodeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onupgradeneeded Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3db Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3resultTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3dbTb4b4b4.Te6edf3objectStoreNamesTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3STORE_NAMETb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3dbTb4b4b4.Te6edf3createObjectStoreTb4b4b4(Te6edf3STORE_NAMETb4b4b4, Tb4b4b4{ Te6edf3keyPathTff7b72: Ta5d6ff"id"Tb4b4b4, Te6edf3autoIncrementTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onsuccess Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3db Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3resultTb4b4b4;
Te6edf3resolveTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72async Te6edf3saveTabsTb4b4b4(Te6edf3tabsTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initPromiseTb4b4b4;
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3transaction Tff7b72= Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4.Te6edf3transactionTb4b4b4(Tb4b4b4[Te6edf3STORE_NAMETb4b4b4]Tb4b4b4, Ta5d6ff"readwrite"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3store Tff7b72= Te6edf3transactionTb4b4b4.Te6edf3objectStoreTb4b4b4(Te6edf3STORE_NAMETb4b4b4)Tb4b4b4;

T8b949e// Clear existing tabs before saving new ones to maintain order and structure
Tff7b72const Te6edf3clearRequest Tff7b72= Te6edf3storeTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3clearRequestTb4b4b4.Te6edf3onsuccess Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3tabsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// Ensure we are storing plain objects, not Vue proxies or other non-cloneable objects.
T8b949e// JSON.parse/stringify is a safe way to strip proxies and ensure serializability
T8b949e// for these simple tab objects.
Tff7b72const Te6edf3plainTabs Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3tabsTb4b4b4)Tb4b4b4)Tb4b4b4;

Te6edf3plainTabsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3tabTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3storeTb4b4b4.Te6edf3addTb4b4b4(Te6edf3tabTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

Te6edf3transactionTb4b4b4.Te6edf3oncomplete Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3transactionTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Te6edf3rejectTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72async Te6edf3loadTabsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initPromiseTb4b4b4;
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3transaction Tff7b72= Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4.Te6edf3transactionTb4b4b4(Tb4b4b4[Te6edf3STORE_NAMETb4b4b4]Tb4b4b4, Ta5d6ff"readonly"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3store Tff7b72= Te6edf3transactionTb4b4b4.Te6edf3objectStoreTb4b4b4(Te6edf3STORE_NAMETb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3request Tff7b72= Te6edf3storeTb4b4b4.Te6edf3getAllTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onsuccess Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3resolveTb4b4b4(Te6edf3requestTb4b4b4.Te6edf3resultTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3rejectTb4b4b4(Te6edf3requestTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72async Te6edf3clearAllTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initPromiseTb4b4b4;
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3transaction Tff7b72= Tff7b72thisTb4b4b4.Te6edf3dbTb4b4b4.Te6edf3transactionTb4b4b4(Tb4b4b4[Te6edf3STORE_NAMETb4b4b4]Tb4b4b4, Ta5d6ff"readwrite"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3store Tff7b72= Te6edf3transactionTb4b4b4.Te6edf3objectStoreTb4b4b4(Te6edf3STORE_NAMETb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3request Tff7b72= Te6edf3storeTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3requestTb4b4b4.Te6edf3onsuccess Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3requestTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3rejectTb4b4b4(Te6edf3requestTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72export Tff7b72const Te6edf3micronStorage Tff7b72= Tff7b72new Te6edf3MicronStorageTb4b4b4(Tb4b4b4)Tb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────